package ParserHorarios;

import java.text.SimpleDateFormat;

public class Horario {

	private String tipo;
	private String inicio;
	private String fin;
	private String dia;
	private String sede;
	private String aula;
	
	public Horario(String tipo, String dia, String inicio, String fin, String sede, String aula) throws Exception {
		
		try {
			
			this.tipo = tipo;			
			this.dia = dia.toLowerCase();	
			this.inicio = new SimpleDateFormat("HH:mm:ss").format(new SimpleDateFormat("HH:mm").parse(inicio));
			this.fin = new SimpleDateFormat("HH:mm:ss").format(new SimpleDateFormat("HH:mm").parse(fin));
	        this.sede = sede;
			this.aula = aula;
			
			ValidateTipoClase();
			ValidateDia();
			ValidateSede();			
			
		} catch (Exception e) {
			throw new Exception("Error en la inicialización de horario.");
		}
	}

	private void ValidateDia() throws Exception {
		
		if (dia.equals("lunes")) return;
		if (dia.equals("martes")) return;
		if (dia.equals("miércoles") || dia.equals("miercoles")) return;
		if (dia.equals("jueves")) return;
		if (dia.equals("viernes")) return;
		if (dia.equals("sábado") || dia.equals("sabado")) return;
		if (dia.equals("domingo")) return;
		
		throw new Exception("Día inválido.");
	}
	
	private void ValidateSede() throws Exception {
		
		if (sede.equals("PC")) return;
		if (sede.equals("LH")) return;
		if (sede.equals("CU")) return;
		
		throw new Exception("Sede inválida.");
	}
	
	private void ValidateTipoClase() throws Exception {
		
		if (tipo.equals("CP")) return;
		if (tipo.equals("CPO")) return;;
		if (tipo.equals("DC")) return;
		if (tipo.equals("EP")) return;
		if (tipo.equals("EPO")) return;
		if (tipo.equals("LO")) return;
		if (tipo.equals("P")) return;
		if (tipo.equals("PO")) return;
		if (tipo.equals("T")) return;
		if (tipo.equals("TO")) return;
		if (tipo.equals("TP")) return;
		if (tipo.equals("TPO")) return;
		if (tipo.equals("VT")) return;
		if (tipo.equals("SP")) return;
		
		throw new Exception("Tipo inválido.");
	}
	
	public String getTipo() {
		return tipo;
	}
	
	public String getDia() {
		return dia;
	}
	
	public String getInicio() {    
		return inicio;
	}
	
	public String getFin() {       
		return fin;
	}
	
	public String getSede() {
		return sede;
	}
	
	public String getAula() {
		return aula;
	}
}
